﻿#region Copyright

// // The contents of this file are subject to the Mozilla Public License
// // Version 1.1 (the "License"); you may not use this file except in compliance
// // with the License. You may obtain a copy of the License at
// //   
// // http://www.mozilla.org/MPL/
// //   
// // Software distributed under the License is distributed on an "AS IS"
// // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
// // License for the specific language governing rights and limitations under 
// // the License.
// //   
// // The Initial Developer of the Original Code is Robert Smyth.
// // Portions created by Robert Smyth are Copyright (C) 2008-2013.
// //   
// // All Rights Reserved.

#endregion

namespace NoeticTools.NWorkflow.ProgressMonitoring
{
    internal class SequentialProgressScope : ProgressScopeBase
    {
        public SequentialProgressScope(IProgressScopeService scopeService, IProgressScope parent) : base(scopeService, parent)
        {
        }

        public override string Name
        {
            get { return "_Sequential"; }
        }

        public override double TotalCompleted
        {
            get
            {
                var completed = 0.0;
                foreach (var childScope in ChildScopes)
                {
                    completed += childScope.TotalCompleted;
                }
                return completed;
            }
        }

        public override double UpdateWeights(double startingWeight)
        {
            foreach (var childScope in ChildScopes)
            {
                startingWeight = childScope.UpdateWeights(startingWeight);
            }
            return startingWeight;
        }
    }
}